Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Magiclysm] Stop workshop elves and their workshop from spawning #78842

Merged
merged 8 commits into from
Dec 30, 2024

Conversation

Standing-Storm
Copy link
Contributor

Summary

Mods "[Magiclysm] Stop workshop elves and their workshop from spawning"

Purpose of change

The original intention with the elf workshop and its inhabitants as written in #46460 was that they were holiday monsters. However, there's currently no way to make locations holiday-only. That means that elf workshops are free anvils, since you can walk in, the elves all cower away from you, and you take the anvil and then move on rather than actually having to make a demon forge. That's less than ideal.

Describe the solution

Set elf workshops to 0 occurrences and also make them GLOBALLY_UNIQUE so they do not spawn until we have some way of making locations spawn only on holidays.

Describe alternatives you've considered

Testing

Additional context

I'm also not a fan of them from a verisimilitude perspective, but the demon forge is the real offender. Once it's possible to have holiday locations they'd fit in just fine.

@github-actions github-actions bot added [JSON] Changes (can be) made in JSON Mods Issues related to mods or modding Mods: Magiclysm Anything to do with the Magiclysm mod labels Dec 29, 2024
@github-actions github-actions bot requested a review from KorGgenT December 29, 2024 21:13
@github-actions github-actions bot added astyled astyled PR, label is assigned by github actions json-styled JSON lint passed, label assigned by github actions labels Dec 29, 2024
@RenechCDDA
Copy link
Member

Use the SHOULD_NOT_SPAWN flag.

@Standing-Storm
Copy link
Contributor Author

There really is a flag for everything

@Maleclypse
Copy link
Member

I'm not asking you to do this, because I've been pretty certain I could implement the fix you are suggesting we wait for, for the last six months, but it's gonna take time and energy and I keep deciding to spend that energy on something else. But we have the capability to make locations holiday only by creating an overmap special of the same size "strangely festive grassland" that spawns once globally unique. Then set a global EOC to run once daily, checking the date (in game currently, future state could look at external date) and during the week before and after the 25th of december it transforms like an unvitrified farm and post the season transforms back into a "strangely festive grassland".

#### `mapgen_update`
Update the map with changes, described in `mapgen_update`

| Syntax | Optionality | Value  | Info |
| --- | --- | --- | --- | 
| "mapgen_update" | **mandatory** | string, [variable objects](#variable-object) or array | With no other parameters, update the overmap tile at player's current location with changes in `update_mapgen_id` id.  If array is used, the map would be updated for each id |
| "time_in_future" | optional | int, duration, [variable object](#variable-object)) or value between two  | If used, the map change would be delayed for this amount of time.  "infinity" could be used, to make location not update until `key` event happen | 
| "key" | optional | string or [variable object](#variable-object) | id of the event, that you can call outside of EoC to trigger map update.  Key should be [alter_timed_events](#alter_timed_events) | 
| "target_var" | optional | [variable objects](#variable-object) | if used, the target from variable would be used instead of player's current location.  It uses [assign_mission_target](MISSIONS_JSON.md) syntax | 

##### Examples
Update the map with `map_spawn_seller` map

```json
{ "mapgen_update": "map_spawn_seller" }

Update the map with map_spawn_terrain, then map_spawn_furniture, then map_spawn_trap, then map_spawn_field

{ "mapgen_update": [ "map_spawn_terrain", "map_spawn_furniture", "map_spawn_trap", "map_spawn_field" ] }

Update the small_pond with map_bridge when as_soon_as_this_event_trigger event occur

{ "mapgen_update": "map_bridge", "om_terrain": "small_pond", "key": "as_soon_as_this_event_trigger" }

Update the robofachq_subcc_a2 in ancilla_bar_loc coordinates, with nest_ancilla_bar_place_BEMs map

{
  "mapgen_update": "nest_ancilla_bar_place_BEMs",
  "om_terrain": "robofachq_subcc_a2",
  "target_var": { "global_val": "ancilla_bar_loc" }
}

revert_location

Save picked location, and then restore it to this state
Usually used as revert_location with "time_in_future": "infinity", to save mold of location, and some key. Then mapgen_update is used to alter location. In the end, alter_timed_events with key is called to actually revert location.

Syntax Optionality Value Info
"revert_location" mandatory variable object id of variable, where the location would be stored
"time_in_future" mandatory int, duration, variable object) or value between two when the location should be reverted; "infinity" could be used, to make location not update until key event happen
"key" optional string or variable objects id of the event, that you can call outside of EoC to trigger location reverse. Key should be alter_timed_events
Examples

Store vitrified_farm_ground. When vitrified_farm_escape_key is called, the location is reverted

{
  "revert_location": { "global_val": "vitrified_farm_ground" },
  "time_in_future": "infinite",
  "key": "vitrified_farm_escape_key"
},

Anyway we should probably add a comment that this could be potentially fixed in a similar fashion to what is used elsewhere ie the vitrified farm.

@keampe
Copy link
Contributor

keampe commented Dec 30, 2024

How about moving them to "Crazy Cataclysm"? They would seem to fit there.

  • Shane

@Maleclypse
Copy link
Member

How about moving them to "Crazy Cataclysm"? They would seem to fit there.

* Shane

Crazy Cataclysm is Kevin's mod that he manages what goes in it. If he decides to add this there he will do so.

@github-actions github-actions bot added the BasicBuildPassed This PR builds correctly, label assigned by github actions label Dec 30, 2024
@Maleclypse Maleclypse merged commit 10c849b into CleverRaven:master Dec 30, 2024
21 of 26 checks passed
@Standing-Storm Standing-Storm deleted the no-workshop-elves branch December 30, 2024 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions [JSON] Changes (can be) made in JSON json-styled JSON lint passed, label assigned by github actions Mods: Magiclysm Anything to do with the Magiclysm mod Mods Issues related to mods or modding
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants